home *** CD-ROM | disk | FTP | other *** search
- {
- >have a vga that I want to use the above mentioned interrupt with. The
- >problem is that I can't seem to get the interrupt to do its thing. The
- >program seems to go through it with no effect at all. My question is how
- >do I get the results?
-
- The following procedures may help you. VGA has 8 font banks
- (0..7). Load your font using LoadFont, then activate that bank with
- SelectFont. Selecting two different font banks will let you display
- two fonts simultaneously -- intensity bit selects secondary font (you
- loose high intensity colors).
- }
- procedure SelectFont(Prim, Sec: byte);
- var Tmp: byte;
- begin
- Tmp := (Prim and $3) or (Prim shl 2 and $10)
- or (Sec shl 2 and $C) or (Sec shl 3 and $20);
- asm
- mov bl, Tmp
- mov ax, $1103
- int $10
- end;
- if (Prim and $7) = (Sec and $7) then
- Tmp := $F
- else
- Tmp := $7;
- asm
- mov bh, Tmp
- mov bl, $12
- mov ax, $1000
- int $10
- end;
- end;
-
-
- procedure LoadFont(var Buf; Bank, Height: byte; First, Last: char); assembler;
- asm
- mov dl, First
- xor dh, dh
- mov cl, Last
- sub cl, dl
- mov ch, dh
- inc cx
- mov bl, Bank
- mov bh, Height
- les bp, Buf
- mov ax, $1100
- int $10
- end;
-
- var Buf: array [1..4096] of byte;
-
- begin
- { Load 256 8x16 characters in buffer }
- LoadFont(Buf, 0, 16, #0, #255);
- SelectFont(0, 0);
- end.
-
-